import { getOSSConfig, getOSSKey } from './apiOss.js'

const OSS = require('ali-oss')

/**
 * 本地初始化OSS
 * @type {Client}
 */
// export const client = new OSS({
//   endpoint: '',
//   accessKeyId: '',
//   accessKeySecret: '',
//   bucket: ''
// })

/**
 * 远程初始化OSS
 * 如果使用动态的OSS帐号初始化，可以用此处注释的方法进行初始化
 */
// export const client = getOSSConfig()
export function setOSSConfig() {
  getOSSConfig().then(res => {
    return new OSS({
      endpoint: '',
      accessKeyId: '',
      accessKeySecret: '',
      bucket: ''
    })
  })
}
/**
 * 从后端获取临时上传凭证的组装参数
 */
export const ossKey = {
  policy: '',
  signature: '',
  ossaccessKeyId: '',
  key: '',
  dir: '',
  host: ''
}
/**
 * 不采用前端加密的模式，用后端加密验签，前端从后端获取临时上传凭证
 * @param file 文件名
 */
export async function getTemporaryKey(file,res) {
  // const res = await getOSSKey()
  return {
    policy: res.data.policy,
    signature: res.data.signature,
    ossaccessKeyId: res.data.accessid,
    dir: res.data.dir,
    host: res.data.host,
    key: res.data.dir + file.uid + file.name.slice(file.name.lastIndexOf('.'))
  }
}

/**
 * 上传图片 -- 单图
 * @param {*} file
 */
export function uploadImg(file) {
  const fileName = `advertising/${Date.parse(new Date())}${file.name}` // 定义唯一的文件名
  return client.put(fileName, file)
}

/**
 * 上传图片 -- 多图
 * @param {*} file
 * @returns
 */
export async function uploadImgList(file) {
  var imgList = []
  file.forEach((item) => {
    imgList.push(imgUploads(item.raw))
  })
  await Promise.all(imgList).then((res) => {
    imgList = res
  })
  return imgList
}

export function imgUploads(file) {
  const fileName = `advertising/${Date.parse(new Date())}${file.name}` // 定义唯一的文件名
  return new Promise((resolve, reject) => {
    client.put(fileName, file).then((res) => {
      resolve(res.url)
    }).catch((err) => {
      reject(err)
    })
  })
}
